"""
弱引用：
    python会自动进行内存管理（对大多数对象进行引用计数并使用garbage collection 来清除循环引用）。
当某个对象的最后一个引用呗移除后不久就会被释放所占用的内存。

此方式对大多数应用来说都合适，但偶尔也必须在对象持续被其他对象使用的时候跟踪他们。不幸的是， 跟踪他们
将创建一个会令其永久作用的引用。weakref模块提供的工具可以不必创建引用就能跟踪对象。当对象不再需要的
时候，它会自动从一个弱引用表中呗移除，并为弱引用 对象触发一个回调。典型应用包括对创建开销较大的
对象进行缓存。
"""


import weakref, gc


class A:
    def __init__(self, value):
        self.value = value


a = A(10)
d = weakref.WeakKeyDictionary()

print(d)
d["a"] = a
print(d)
# del a
# gc.collect()
# print(d["primary"])



















